iT邦幫忙

2022 iThome 鐵人賽

0
自我挑戰組

多人連線遊戲背後的原理與實作系列 第 29

Day29 - 程式實作(遊戲安全篇)

  • 分享至 

  • xImage
  •  

避免玩家在遊戲中作弊是非常重要的,在之前的文章我們有提到如何防止遊戲作弊產生,這篇文章將會說明在程式中如何防止玩家作弊。

1. 權威伺服器計算

在Client-Server系統中因為有權威伺服器的關係,我們可以把重要的計算(較容易被鑽漏洞的地方 ex: 傷害、玩家數值等)在伺服器裡做運算,在封包中我們只需要傳送玩家的攻擊指令或行走指令,例如玩家點擊滑鼠左鍵,則傳送一個攻擊指令的封包,伺服器再去運算前方是否有敵人,再將結果回傳到客戶端,而不是傳送玩家是否有成功攻擊到前方的敵人,或是傳送造成的傷害數值等。

2. 交叉比對

我們也可以透過伺服器去交叉比對遊戲中的數值,來預防玩家在遊戲中作弊,例如玩家目前等級5,可是卻傳來要求領取等級6的獎品,那我在伺服器就可以先比對玩家的指令,是否為可執行的指令。

3. 密碼加密

玩家將密碼傳送到伺服器時,這存在著一定的風險,這時我們需要在密碼的封包上進行加密,然後在伺服器解密來做比對,可以使用sha256或是比較新的加密方式,以免被有心人士破解。

4. 防掛軟體

有一些遊戲會要求玩家安裝一些防作弊的軟體,像是 Easy Anti-Cheat 或是 Riot Vanguard 等。


上一篇
Day28 - 程式實作(斷線處理篇)
下一篇
Day30 - 程式實作(系統優化篇)
系列文
多人連線遊戲背後的原理與實作30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言